package main

import "fmt"

// BubbleSort 冒泡排序
func BubbleSort(arr []int) []int {
	// 循环体
	for i := 0; i < len(arr)-1; i++ {
		//-i是为了节省内存
		for j := 0; j < len(arr)-1-i; j++ {
			// 升序
			if (arr)[j] > (arr)[j+1] {
				// 交换
				(arr)[j], (arr)[j+1] = (arr)[j+1], (arr)[j]
			}
		}
	}
	return arr
}
func main() {
	// 接收一个数组，该数组有5个数，请找出最大数和最小数和对应的下标
	var arr1 = []int{5, 7, 7, 1, 1, 4, 2}
	// 记住，创建切片数组需要先make初始化值才能使用
	var arr2 = make([]int, len(arr1))
	copy(arr2, arr1)
	fmt.Println(arr2)
	var sortArr = BubbleSort(arr1)
	var lenSrotArr = len(sortArr) - 1
	var min = sortArr[0]
	var max = sortArr[lenSrotArr]
	var sliceIndexMax []int
	var sliceIndexMin []int
	for k, v := range arr2 {
		if min == v {
			sliceIndexMin = append(sliceIndexMin, k)
		}
		if max == v {
			sliceIndexMax = append(sliceIndexMax, k)
		}
	}

	fmt.Println("min===>", min)
	fmt.Println("max===>", max)
	fmt.Println("sliceIndexMin===>", sliceIndexMin)
	fmt.Println("sliceIndexMax===>", sliceIndexMax)

}
